home *** CD-ROM | disk | FTP | other *** search
/ By Popular Request 2.0 / By Popular Request 2.0 (Arsenal Computer).ISO / amiga_4 / mkicnsfx.lha / MakeIcons_ifx / MakeIcons.ifx < prev    next >
Text File  |  1995-03-19  |  3KB  |  149 lines

  1. /*
  2.  * Arexx Macro for creating icons from images
  3.  * Created by Per Espen Hagen
  4.  * $VER: MakeIcons 2.1 (13.2.1995)
  5.  *
  6.  */
  7.  
  8. OPTIONS RESULTS
  9.  
  10.  
  11. /****** Get user input ******/
  12.  
  13. Files = ""
  14. RollScreenUp 400
  15. ADDRESS command 'RxSet Files `RequestFile MultiSelect Title="Select picture file(s)"`'
  16. RollScreenDown
  17. Files = GetClip('Files')
  18. Files = Compress(Files, '"')
  19. IF Files = "" THEN DO
  20.   RequestNotify "No files selected."
  21.   Exit
  22. END
  23.  
  24.  
  25. /* Options requester */
  26. Gad.1 = 'J/80/17/25/Contrast:/20'
  27. Gad.2 = 'J/80/32/25/Gamma:/32'
  28. Gad.3 = 'J/80/47/25/Sharpen:/5'
  29.  
  30. Gad.4 = 'J/180/17/25/Max Size:/80'
  31. Gad.5 = 'J/228/17/25/x/60'
  32. Gad.6 = 'J/180/32/25/Step Size:/4'
  33. Gad.7 = 'J/228/32/25/x/4'
  34. Gad.8 = 'J/180/47/25/Bitplanes:/3'
  35.  
  36. Gad.9 = 'X/275/18/Use Aspect?/0'
  37. Gad.10= 'X/275/33/Grayscale?/0'
  38. Gad.11= 'X/275/48/HAM?/0'
  39.  
  40. ComplexRequest '"MakeIcons"' 11 Gad 390 83
  41.  
  42. Con    = Result.1
  43. Gam    = Result.2
  44. Sharp  = Result.3
  45. MaxW   = Result.4
  46. MaxH   = Result.5
  47. StepX  = Result.6
  48. StepY  = Result.7
  49. Planes = Result.8
  50. UseAsp = Result.9
  51. Gray   = Result.10
  52. HAM    = Result.11
  53.  
  54.  
  55. /****** Convert & check input validity ******/
  56.  
  57. SELECT
  58.   WHEN Planes = 1 THEN NCol =   2
  59.   WHEN Planes = 2 THEN NCol =   4
  60.   WHEN Planes = 3 THEN NCol =   8
  61.   WHEN Planes = 4 THEN NCol =  16
  62.   WHEN Planes = 5 THEN NCol =  32
  63.   WHEN Planes = 6 THEN NCol =  64
  64.   WHEN Planes = 7 THEN NCol = 128
  65.   WHEN Planes = 8 THEN NCol = 256
  66. OTHERWISE
  67.   RequestNotify "Planes must be in the range 1-8"
  68.   Exit
  69. END
  70.  
  71.  
  72. /****** Initialize ImageFX ******/
  73.  
  74. /* Disable Undo, if enabled */
  75. GetPrefs Undo
  76. PrefUndo = Result
  77. SetPrefs Undo OFF
  78.  
  79. /* Set a few render options */
  80. Palette 8
  81. LockRange 0 OFF
  82. LoadPalette "ImageFX:Storage/Palettes/Workbench" '-1'
  83. LockRange 0 ON
  84. Render Dither 1 0 0
  85. Render ModeID 2048 * HAM  /* Default mode, '0', for non-HAM */
  86. Render Colors NCol
  87.  
  88.  
  89. /****** Main Loop ******/
  90.  
  91. NFiles = Words(Files)
  92. DO FrameNo = 1 TO NFiles
  93.   PARSE Var Files File Files
  94.  
  95.   /* Load a picture */
  96.   LoadBuffer File Force NOSMOOTH
  97.   
  98.   GetMain
  99.   IF Result = "" THEN DO
  100.     RequestNotify "Unable to load file. Out of memory?"
  101.   END
  102.   ELSE DO
  103.     Data = Result
  104.     PARSE VAR Data Name W H Depth AspX AspY Dummy
  105.     SAY "Filename = "||Name
  106.  
  107.     /* Possible aspect adjustment */
  108.     IF UseAsp THEN DO
  109.       W = W * AspX
  110.       H = H * AspY
  111.     END
  112.  
  113.     IF (W*MaxH) > (H*MaxW) THEN DO
  114.       IconW = MaxW
  115.       IconH = ((H*IconW/W + StepY - 1) % StepY) * StepY
  116.     END
  117.     ELSE DO
  118.       IconH = MaxH
  119.       IconW = ((W*IconH/H + StepX - 1) % StepX) * StepX
  120.     END
  121.     Scale IconW IconH
  122.  
  123.     /* Convert to B/W, if desired */
  124.     IF Depth = 3 & Gray THEN
  125.       ColorToGray Luma
  126.  
  127.     /* Convert to colour, if necessary */
  128.     IF Depth = 1 | Gray THEN
  129.       GrayToColor
  130.     
  131.     /* Contrast enhancement */
  132.     Contrast Con
  133.     Gamma Gam
  134.     UnsharpMask Sharp
  135.  
  136.     /* Render the icon and save it */
  137.     Render Go
  138.     SaveRenderedAs Icon File FORCE
  139.     Render Close
  140.  
  141.     /* Add default tool to icon */
  142.     ADDRESS command 'NewTool' File
  143.   END
  144. END
  145.  
  146. /* Reset Undo to previous state */
  147. SetPrefs Undo PrefUndo
  148.  
  149.